package com.fmboy.MXH.nav.domain.entities;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 表名：mxh_nav_navigation
 * 表注释：喵星汇-导航-导航表
 */

@Data
@EqualsAndHashCode(callSuper = false) //生成equals和hashCode方法
@Accessors(chain = true) //链式编程
@Table(name = "mxh_nav_navigation")
public class Navigation implements Serializable {
    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 主键ID
     * -- GETTER --
     * 获取主键ID
     * <p>
     * <p>
     * -- SETTER --
     * 设置主键ID
     *
     * @return id - 主键ID
     * @param id 主键ID
     */
    @Id
    @GeneratedValue(generator = "JDBC")
    private Integer id;

    /**
     * 用户ID
     * -- GETTER --
     * 获取用户ID
     * <p>
     * <p>
     * -- SETTER --
     * 设置用户ID
     *
     * @return userId - 用户ID
     * @param userId 用户ID
     */
    @Column(name = "user_id")
    private Integer userId;

    /**
     * 分类ID
     * -- GETTER --
     * 获取分类ID
     * <p>
     * <p>
     * -- SETTER --
     * 设置分类ID
     *
     * @return categoryId - 分类ID
     * @param categoryId 分类ID
     */
    @Column(name = "category_id")
    private Integer categoryId;

    /**
     * 导航名
     * -- GETTER --
     * 获取导航名
     * <p>
     * <p>
     * -- SETTER --
     * 设置导航名
     *
     * @return navigationName - 导航名
     * @param navigationName 导航名
     */
    @Column(name = "navigation_name")
    private String navigationName;

    /**
     * 导航图标
     * -- GETTER --
     * 获取导航图标
     * <p>
     * <p>
     * -- SETTER --
     * 设置导航图标
     *
     * @return navigationLogo - 导航图标
     * @param navigationLogo 导航图标
     */
    @Column(name = "navigation_logo")
    private String navigationLogo;

    /**
     * 导航地址
     * -- GETTER --
     * 获取导航地址
     * <p>
     * <p>
     * -- SETTER --
     * 设置导航地址
     *
     * @return navigationUrl - 导航地址
     * @param navigationUrl 导航地址
     */
    @Column(name = "navigation_url")
    private String navigationUrl;

    /**
     * 导航说明
     * -- GETTER --
     * 获取导航说明
     * <p>
     * <p>
     * -- SETTER --
     * 设置导航说明
     *
     * @return navigationText - 导航说明
     * @param navigationText 导航说明
     */
    @Column(name = "navigation_text")
    private String navigationText;

    /**
     * 导航状态
     * -- GETTER --
     * 获取导航状态
     * <p>
     * <p>
     * -- SETTER --
     * 设置导航状态
     *
     * @return state - 导航状态
     * @param state 导航状态
     */
    private String state;

    /**
     * 原因
     * -- GETTER --
     * 获取原因
     * <p>
     * <p>
     * -- SETTER --
     * 设置原因
     *
     * @return reason - 原因
     * @param reason 原因
     */
    private String reason;

    /**
     * 导航排序
     * -- GETTER --
     * 导航排序
     * <p>
     * <p>
     * -- SETTER --
     * 导航排序
     *
     * @return SortOrder - 导航排序
     * @param SortOrder 导航排序
     */
    @Column(name = "sort_order")
    private int SortOrder;

    /**
     * 创建时间
     * -- GETTER --
     * 获取创建时间
     * <p>
     * <p>
     * -- SETTER --
     * 设置创建时间
     *
     * @return createTime - 创建时间
     * @param createTime 创建时间
     */
    @Column(name = "create_time")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd' 'HH:mm:ss")
    private LocalDateTime createTime;

    /**
     * 修改时间
     * -- GETTER --
     * 获取修改时间
     * <p>
     * <p>
     * -- SETTER --
     * 设置修改时间
     *
     * @return updateTime - 修改时间
     * @param updateTime 修改时间
     */
    @Column(name = "update_time")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd' 'HH:mm:ss")
    private LocalDateTime updateTime;

}